Along with recent improvement in throughput of a computer system, it has been required to improve the performance of a storage medium that saves information. As a result, in recent years, for example, an SSD (Solid State Drive) using a NAND flash memory (to be referred to as a NAND flash hereinafter) as a memory element has become widespread as a high performance storage medium. In the NAND flash used as a memory element in the storage medium such as an SSD, it is necessary to erase stored old data at the time of update of the data, and an increase in erase count degrades the performance including processing of saving a valid page in a block and reduces the life of the element. To solve this problem, it is necessary to reduce the erase count and equalize the write counts of respective blocks not to excessively consume the life of a specific element.
To cope with this, in a general SSD, an FTL (Flash Translation Layer) in a controller performs access processing unique to the NAND flash, and equalization of block erase counts, that is called wear leveling. More specifically, for example, as described in patent literature 1 and non-patent literature 1, an erased block is prepared as a data storage area, and the block area is mapped on a page basis in a write-once manner in response to a write request from a host computer. The write counts are equalized by setting, as a write data storage area, a block whose erase count is smallest, among a plurality of erased blocks.
On the other hand, in order for the SSD to continuously store write data from the host computer in a write-once manner, it is necessary to perform GC (Garbage Collection) to collect a memory area storing data that has become unnecessary due to update or the like. In the SSD, in addition to general GC processing, it is necessary to perform erase processing on a block basis to reuse a memory area storing unnecessary data, and valid pages are saved in advance in a memory area outside the block. Thus, the load of GC increases in proportion to the number of pages to be saved. An increase in load of GC delays access processing in the SSD and degrades the performance. In the save processing, data is written in the NAND flash. Consequently, an increase in number of pages to be saved is one of factors in consumption of the life of the SSD.
To continuously suppress the load of GC, a state in which invalid pages are concentrated in a small number of blocks without being distributed to many blocks is maintained in updating or deleting data, thereby suppressing an increase in save processing in GC. As a method of maintaining the state in which invalid pages are concentrated in a small number of blocks, non-patent literature 2 describes a method of reducing the load of GC by adding information called the same stream ID to each set of data having the same property with respect to a write command from the host computer, selecting a storage destination block of the NAND flash in the SSD based on the stream ID, and storing the write data so that the update timings of data in each block are close to each other.